例题2.5叠筐
题目描述:
把一个个大小差一圈的框叠上去， 使得从上往下看时，边筐花色交错。这个工作现在要让计
机来完成，得看你的了。
输入;
输入是一个个三元组，分别是:外筐尺寸n (n为满足0<n<80的奇整数)，中心花色字符，外
筐花色字符，后二者都为ASCII可见字符。
输出:
输出叠在起的图案， 中心花色与外筐的花色字符从内层起交错相叠， 多筐相叠时，最外值的
用总是被打磨掉，叠框与叠框之间应有一行问隔，
样例输入:
11 B A
5 @ W

样例输出:
 AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
 AAAAAAAAA


 @@@
@www@
@W@W@
@Www@
 @@@


#include<iostream>
#include<cstdio>
using namespace std;

#define maxn 90
char matrix[maxn][maxn];
int main()
{
	int n;
	char center,outside;
	bool firstcase=true;
	while(scanf("%d %c %c",&n,&center,&outside)!=EOF)
	{
		if(firstcase)//第一组数据不打印换行
		{
			firstcase=false;
		}else
		{
			printf("\n");
		}
		for(int i=0;i<=n/2;i++)
		{
			int j=n-i-1;
			int length=n-2*i;
			char current;
			if((n/2-i)%2==0)
			{
				current=center;
			}else{
				current=outside;
			}
			for(int k=0;k<length;++k)
			{
				matrix[i][i+k]=current;
				matrix[i+k][i]=current;
				matrix[j][i+k]=current;
				matrix[i+k][j]=current;
			}
		}
		if(n!=1)
		{
			matrix[0][0]=' ';
			matrix[n-1][0]=' ';
			matrix[0][n-1]=' ';
			matrix[n-1][n-1]=' ';
		}
		
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n;j++)
			{
				printf("%c",matrix[i][j]);
			}
			printf("\n");
		}
	}	
	return 0;
}